<template>
  <div class="wrapper">
    <!-- header部分 -->
    <header>
      <p>商家信息</p>
    </header>

    <!-- 商家logo部分 -->
    <div class="business-logo">
      <img :src="business.businessImg" />
    </div>

    <!-- 商家信息部分 -->
    <div class="business-info">
      <h1>{{business.businessName}}</h1>
      <p>&#165;{{business.starPrice}}起送 &#165;{{business.deliveryPrice}}配送</p>
      <p>{{business.businessExplain}}</p>
    </div>

    <!-- 食品列表部分 -->
    <ul class="food">
      <li v-for="(item,index) in foodArray">
        <div class="food-left">
          <img :src="item.foodImg" />
          <div class="food-left-info">
            <h3>{{item.foodName}}</h3>
            <p>{{item.foodExplain}}</p>
            <p>&#165;{{item.foodPrice}}</p>
          </div>
        </div>
        <div class="food-right">
          <div>
            <i class="fa fa-minus-circle" @click="minus(index)" v-show="item.quantity>0"></i>
          </div>
          <p>
            <span v-show="item.quantity!=0">{{item.quantity}}</span>
          </p>
          <div>
            <i class="fa fa-plus-circle" @click="add(index)"></i>
          </div>
        </div>
      </li>
    </ul>

    <!-- 购物车部分 -->
    <div class="cart">
      <div class="cart-left">
        <div class="cart-left-icon">
          <i class="fa fa-shopping-cart"></i>
          <div class="cart-left-icon-quantity" v-show="number!=0">{{number}}</div>
        </div>
        <div class="cart-left-info">
          <p>&#165;{{price}}</p>
          <p>另需配送费{{deliveryPrice}}元</p>
        </div>
      </div>
      <div class="cart-right">
        <!-- 不够起送费 -->
        <!--
					<div class="cart-right-item">
						&#165;15起送
					</div>
        -->
        <!-- 达到起送费 -->
        <div class="cart-right-item" @click="orderJump()">去结算</div>
      </div>
    </div>
  </div>
</template>

<script>
export default {
  data() {
    return {
      businessId: this.$route.query.businessId,
      business: {},
      foodArray: [],
      user: {},
      deliveryPrice:3,
      price:{},
      number:{}
    };
  },
  created() {
    //查看SessionStorage中有没有user
    this.user = this.$getSessionStorage("user");

    // 根据businessId查询商家的信息
    this.$axios
      .post(
        "BusinessController/getBusinessById",
        this.$qs.stringify({
          businessId: this.businessId
        })
      )
      .then(response => {
        console.log(response.data);
        this.business = response.data;
      })
      .catch(error => {
        console.log(error);
      });

    // 根据businessId查询所属食品的信息
    this.$axios
      .post(
        "FoodController/listFoodBusinessId",
        this.$qs.stringify({
          businessId: this.businessId
        })
      )
      .then(response => {
        if (this.user != null) {
          this.listCart();
          
        }
        console.log(response.data);
        this.foodArray = response.data;
        //如果已经登录，那么需要去查询购物车中是否已经选中了某个食品

        //需要对foodArray遍历，每遍历一次就会获取到一个Food对象，然后给这个对象添加一个quantity数量并设置为初始值0
        for (let i = 0; i < this.foodArray.length; i++) {
        this.foodArray[i].quantity = 0;
        this.foodArray[i].cartId = null;
        }
      })
      .catch(error => {
        console.error(error);
      });
  },
  methods: {
    //购物车查询功能
    listCart() {
      this.$axios
        .post(
          "CartController/listCart",
          this.$qs.stringify({
            businessId: this.businessId,
            userId: this.user.userId
          })
        )
        .then(response => {
			//遍历购物车
          for (let i = 0; i < response.data.length; i++) {
            for (let a = 0; a < this.foodArray.length; a++) {
              if (response.data[i].foodId == this.foodArray[a].foodId)
              this.foodArray[a].quantity = response.data[i].quantity;
              this.foodArray[a].cartId = response.data[i].cartId;
            }
          }
          //更新页面数据
          this.sum();
          this.foodArray.sort();
          console.log(this.foodArray);
        })
        .catch(error => {
          console.log(error);
        });
    },
    add(index) {
      //先要登录验证的
      if (this.user == null) {
        this.$router.push({ path: "/login" });
        return;
      }
      //下一步需要写什么呢，我要将点击完加号后的数据保存到Cart购物车表中
      //如果某一个食品的数量为0那么就要调用一个函数完成insert的操作
      if (this.foodArray[index].quantity == 0) {
        //将这个食品添加到购物车中
        this.saveCart(index);
      } else {
        //否则需要在数据库中更新quantity(加1)
        this.updateCart(index, 1);
      }
	},
    minus(index) {
            //先要登录验证的
      if (this.user == null) {
        this.$router.push({ path: "/login" });
        return;
	  }
	  //数据只有在大于0的时候增加
	  if(this.foodArray[index].quantity > 0){
		  this.updateCart(index, -1);
	  }
    },
    saveCart(index) {
      //向后台发送请求
      this.$axios
        .post(
          "CartController/saveCart",
          this.$qs.stringify({
            businessId: this.businessId,
            userId: this.user.userId,
            foodId: this.foodArray[index].foodId
          })
        )
        .then(response => {
          if (response.data == 1) {
            //食品的数量就要更新为1
            this.foodArray[index].quantity = 1;
            //一定要调用sort方法排序之后才能在页面中显示
            this.sum();
            this.foodArray.sort();
          }
        })
        .catch(error => {
          console.log(error);
        });
    },
    // 更新数量
    updateCart(index, num) {
      this.$axios
        .post(
          "CartController/updateCart",
          this.$qs.stringify({
            businessId: this.businessId,
            userId: this.user.userId,
            foodId: this.foodArray[index].foodId,
            quantity: this.foodArray[index].quantity + num
          })
        )
        .then(response => {
          if (response.data == 1) {
            //更新食品的数量
            this.foodArray[index].quantity += num;
            this.sum();
            this.foodArray.sort();
          } else {
            alert("向购物车中更新失败！");
          }
        })
        .catch(error => {
          console.log(error);
		    });
      },
    sum(){
      var price1 = this.deliveryPrice;
      var number1 = 0;
        for (let i = 0; i < this.foodArray.length; i++){
          price1 += (this.foodArray[i].quantity*this.foodArray[i].foodPrice);
          number1 += this.foodArray[i].quantity;
        }
      console.log(price1);
      this.price = price1;
      this.number = number1;
    },
    orderJump(){
      if(this.foodArray!=null){
        this.$router.push({
          path:'/order',
          query: {
            businessId: this.businessId,
          }
        });
      }
    }
  }
};
</script>

<style scoped>
.wrapper {
  width: 100%;
  height: 100%;
}

/****************** header部分 ******************/
.wrapper header {
  width: 100%;
  height: 12vw;
  background-color: #0097ff;
  color: #fff;
  font-size: 4.8vw;

  position: fixed;
  left: 0;
  top: 0;
  z-index: 1000;

  display: flex;
  justify-content: center;
  align-items: center;
}

/****************** 商家logo部分 ******************/
.wrapper .business-logo {
  width: 100%;
  height: 35vw;
  /*使用上外边距避开header部分*/
  margin-top: 12vw;

  display: flex;
  justify-content: center;
  align-items: center;
}
.wrapper .business-logo img {
  width: 40vw;
  height: 30vw;
  border-radius: 5px;
}

/****************** 商家信息部分 ******************/
.wrapper .business-info {
  width: 100%;
  height: 20vw;

  display: flex;
  flex-direction: column;
  justify-content: center;
  align-items: center;
}
.wrapper .business-info h1 {
  font-size: 5vw;
}
.wrapper .business-info p {
  font-size: 3vw;
  color: #666;
  margin-top: 1vw;
}

/****************** 食品列表部分 ******************/
.wrapper .food {
  width: 100%;
  /*使用下外边距避开footer部分*/
  margin-bottom: 14vw;
}
.wrapper .food li {
  width: 100%;
  box-sizing: border-box;
  padding: 2.5vw;
  user-select: none;

  display: flex;
  justify-content: space-between;
  align-items: center;
}
.wrapper .food li .food-left {
  display: flex;
  align-items: center;
}
.wrapper .food li .food-left img {
  width: 20vw;
  height: 20vw;
}
.wrapper .food li .food-left .food-left-info {
  margin-left: 3vw;
}
.wrapper .food li .food-left .food-left-info h3 {
  font-size: 3.8vw;
  color: #555;
}
.wrapper .food li .food-left .food-left-info p {
  font-size: 3vw;
  color: #888;
  margin-top: 2vw;
}
.wrapper .food li .food-right {
  width: 16vw;
  display: flex;
  justify-content: space-between;
  align-items: center;
}
.wrapper .food li .food-right .fa-minus-circle {
  font-size: 5.5vw;
  color: #999;
  cursor: pointer;
}
.wrapper .food li .food-right p {
  font-size: 3.6vw;
  color: #333;
}
.wrapper .food li .food-right .fa-plus-circle {
  font-size: 5.5vw;
  color: #0097ef;
  cursor: pointer;
}

/****************** 购物车部分 ******************/
.wrapper .cart {
  width: 100%;
  height: 14vw;

  position: fixed;
  left: 0;
  bottom: 0;

  display: flex;
}
.wrapper .cart .cart-left {
  flex: 2;
  background-color: #505051;
  display: flex;
}
.wrapper .cart .cart-left .cart-left-icon {
  width: 16vw;
  height: 16vw;
  box-sizing: border-box;
  border: solid 1.6vw #444;
  border-radius: 8vw;
  background-color: #3190e8;
  font-size: 7vw;
  color: #fff;

  display: flex;
  justify-content: center;
  align-items: center;

  margin-top: -4vw;
  margin-left: 3vw;

  position: relative;
}
.wrapper .cart .cart-left .cart-left-icon-quantity {
  width: 5vw;
  height: 5vw;
  border-radius: 2.5vw;
  background-color: red;
  color: #fff;
  font-size: 3.6vw;

  display: flex;
  justify-content: center;
  align-items: center;

  position: absolute;
  right: -1.5vw;
  top: -1.5vw;
}
.wrapper .cart .cart-left .cart-left-info p:first-child {
  font-size: 4.5vw;
  color: #fff;
  margin-top: 1vw;
}
.wrapper .cart .cart-left .cart-left-info p:last-child {
  font-size: 2.8vw;
  color: #aaa;
}

.wrapper .cart .cart-right {
  flex: 1;
}
/*达到起送费时的样式*/
.wrapper .cart .cart-right .cart-right-item {
  width: 100%;
  height: 100%;
  background-color: #38ca73;
  color: #fff;
  font-size: 4.5vw;
  font-weight: 700;
  user-select: none;
  cursor: pointer;

  display: flex;
  justify-content: center;
  align-items: center;
}

/*不够起送费时的样式（只有背景色和鼠标样式的区别）*/
/*
.wrapper .cart .cart-right .cart-right-item{
	width: 100%;
	height: 100%;
	background-color: #535356;
	color: #fff;
	font-size: 4.5vw;
	font-weight: 700;
	user-select: none;
	
	display: flex;
	justify-content: center;
	align-items: center;
}
*/
</style>